package br.com.edoc.controller.portal;

import java.util.List;


import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.event.ActionEvent;
import org.primefaces.model.DefaultMenuModel;
import org.primefaces.model.MenuModel;
import br.com.edoc.controller.ControllerPadrao;
import br.com.edoc.controller.cadastro.AlterarSenhaUsuarioController;
import br.com.edoc.entidade.Modulo;
import br.com.edoc.entidade.Usuario;
import br.com.edoc.excecoes.ExceptionApplication;
import br.com.edoc.gerentes.GerenteControleAcesso;
import br.com.edoc.gerentes.GerenteSeguranca;
import br.com.edoc.inicializador.InicializadorUsuario;
@ManagedBean(name="loginUsuario")
@SessionScoped
public class LoginUsuarioController extends ControllerPadrao{

	

	

	/**
	 * 
	 */
	private static final long serialVersionUID = 1443239184330139841L;

	private Usuario usuario;
	
	private MenuModel menuModulo;
	
	private int i; 

	
	
	
	public void acaoLogar(){
		GerenteControleAcesso gc = getAtendente().chamaGerenteControleAcesso();
		try {
			setMenuModulo(null);
			getUsuario().setSenha(GerenteSeguranca.encriptaSenha(getUsuario().getSenha()));
			setUsuario(gc.logar(getUsuario()));
			if(getUsuario()==null || getUsuario().getId()==null){
				addAlertMessage("Usuário ou senha incorretos");
			}else{
				
				List<Modulo> lista = gc.findModuloForUsuario(getUsuario());
				
				PortalController portal = new PortalController((Usuario)(new InicializadorUsuario()).inicializar(getUsuario()), lista);
				if(getUsuario().getPrimeiroAcesso()){
					AlterarSenhaUsuarioController alterar = new AlterarSenhaUsuarioController(getUsuario());
				}
			}
		} catch (ExceptionApplication e) {
			// TODO Auto-generated catch block
			addAlertMessage(e.getMessage());
		}

	}
	

	public Usuario getUsuario() {
		if(usuario == null){
			usuario = new Usuario();
		}
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}



	public MenuModel getMenuModulo() {
		if(menuModulo == null){
			menuModulo = new DefaultMenuModel();
		}
		return menuModulo;
	}

	public void setMenuModulo(MenuModel menuModulo) {
		this.menuModulo = menuModulo;
	}
	
	public int getI() {
		i=1+i;
		return i;
	}

	public void setI(int i) {
		this.i = i;
	}

	public void changeModulo(ActionEvent event){
		
		System.out.print("Menu:"+event.getComponent().getId());
	}





}
